package user

import (
	"fmt"
	//"net/http"
	"apiserver/pkg/errno"
	"github.com/gin-gonic/gin"
	"github.com/zxmrlc/log"
	. "apiserver/handler"
)

func Create(c *gin.Context){
	//接收用户提交信息
	//var r struct {
	//	Username string `json:"username"`
	//	Password string `json:"password"`
	//}
	var r CreateRequest

	//将用户数据绑定到r上
	if err := c.Bind(&r); err != nil{
		//c.JSON(http.StatusOK, gin.H{"error": errno.ErrBind})
		SendResponse(c, errno.ErrBind, nil)
		return
	}

	//绑定没有出错，打印传来的数据
	log.Debugf("username is: [%s], password is [%s]", r.Username, r.Password)

	var err error

	// 如果用户名为空，创建错误，并打印日志
	if r.Username == "" || r.Password== ""{
		// 创建`参数不完整`错误
		err = errno.New(errno.ErrArgsNotComplete, fmt.Errorf("username or password not found")).Add("This is add message.")
		// 记日志（Code, Message, Err） => 当前是error
		log.Errorf(err, "Get an error")
	}

	// 有些错误需要单独提醒但是没必须单独定义一个错误类型，可以这样做
	//err = fmt.Errorf("got an panic")
	


	// 创建返回值
	//rsp := CreateResponse{
	//	Username: r.Username,
	//}

	 // 返回数据 => 能到这里表示无错误，所以返回 nil
	SendResponse(c, err, nil)


	// 解码错误信息
	//code, message := errno.DecodeErr(err)
	//c.JSON(http.StatusOK, gin.H{"code": code, "message": message})


}

